Ra,Ca = map(int,input().split())
a=[]
for r in range(Ra):
    a.append([int(x) for x in input().split()])
Rb,Cb= map(int,input().split())
b=[]
for r in range(Rb):
    b.append([int(x) for x in input().split()])
if Ca==Rb:
    print(Ra,Cb)
    for r1 in range(Ra):#遍历第一个矩阵的每一行
        result = []#一行一行的打印新矩阵
        rc=a[r1]#固定好第一行，第一个矩阵按列取行值
        for c in range(Cb):#遍历第二个矩阵的每一列
            num=0
            for r2 in range(Rb):#遍历第二个矩阵的每一行
                num+=rc[r2]*b[r2][c]#因为第一个矩阵的列标=第二个的行标，同时固定第二个矩阵的列标
            result.append(num)
        print(*result)

else:
    print(f"Error: {Ca} != {Rb}")

